#ifndef CJGBOXDATA_H
#define CJGBOXDATA_H

#include "cjgboxprocessdata.h"
#include <QDateTime>
#include <QString>
#include <qtypes.h>

class CJgOrder;
class CJgBoxProcessData;

class CJgBoxData
{
public:
    qlonglong miBoxRecordId;//筐记录id
    QString mBoxNum;//筐号
    QString mLocalOrderNum;//本地订单
    QString mPartName;//部件名
    int miStartPartSeqNum;//部件开始工序序号
    int miSizeId;//尺码id，在模板车和生成可进料记录里面要用到
    int miPlanCutStart;//生成可进料记录里面要用到
    int miPlanCutEnd;//生成可进料记录里面要用到
    int miPlanCnt;//生成可进料记录里面要用到
    QString mRealCutStr;//生成可进料记录里面要用到
    int miRealCnt;//实际件数
    QDateTime mFeedTime;//用来决定先后发筐
    qlonglong miBoxStatusRecordId;//当前状态记录ID
    int miBoxStatus;//筐状态
    QString mStatusInfo;//状态信息，可以直接赋值给其他成员如回库工位
    QString mBundleNum;//扎号信息
    int miPartSeqNum;//当前工序在部件里面的顺序，0表示还未分配需要做的工序
    bool mbRedistributeFlag;//重配标志
    //int miCurRedistributePosition;//当前重配的工位，以后不要发送给这个工位，CCurBox没有
    bool mbReworkFlag;//返工标志，有未完成的返工记录就有效，直到重新发送一次中查才清除
    int miCurReworkRecordId;//当前返工记录id,返工发送之后有效，直到返工回库之后才=0
    QDateTime mStatusStartTime;//状态开始的时间
    QSet <int> mDoneProcessSeq;//已完成的部件工序序号，跳过生产认为是已完成的
    QSet <qlonglong> mDoneOrderProcessID;//同上
    QSet <int> mCanDoProcessSeq;//可分配的部件工序序号，空表示没有工序或中断了
    QSet <qlonglong> mCanDoOrderProcessID;//同上
    QSet <int> mUnDoneProcessSeq;//未完成的工序序号，从进料的开始序号的前一个序号算起
    QSet <qlonglong> mUnDoneProcessID;//同上

    CJgOrder * pOrder;
    QList<CJgBoxProcessData * > plBoxProcesses;//102开始，筐工序对象指针，内存在这里管理，需要按工序的顺序入列

    CJgBoxData();
};

#endif // CJGBOXDATA_H
